Pré-requisitos: Projeto de Interface
Definição de como o software é estruturado em termos dos componentes que fazem parte da solução e do ambiente de hospedagem da aplicação.
O diagrama de classes ilustra graficamente como será a estrutura do software, e como cada uma das classes da sua estrutura estarão interligadas. Essas classes servem de modelo para materializar os objetos que executarão na memória.
As referências abaixo irão auxiliá-lo na geração do artefato “Diagrama de Classes”.
Este documento descreve a estrutura e o esquema do banco de dados não relacional utilizado por nosso projeto, baseado em MongoDB. O MongoDB é um banco de dados NoSQL que armazena dados em documentos JSON (ou BSON, internamente), permitindo uma estrutura flexível e escalável para armazenar e consultar dados.
Armazena as informações dos usuários do sistema.
Estrutura do Documento
{
"_id": "ObjectId('5f7e1bbf9b2a4f1a9c38b9a1')",
"name": "John Doe",
"email": "[email protected]",
"passwordHash": "hash_da_senha",
"roles": ["admin", "user"],
"createdAt": "2024-08-29T10:00:00Z",
"updatedAt": "2024-08-29T12:00:00Z"
}
- _id: Identificador único do usuário gerado automaticamente pelo MongoDB.
- name: Nome completo do usuário.
- email: Endereço de email do usuário.
- passwordHash: Hash da senha do usuário.
- roles: Lista de papéis atribuídos ao usuário (por exemplo, admin, user).
- createdAt: Data e hora de criação do usuário.
- updatedAt: Data e hora da última atualização dos dados do usuário.
Armazena as informações dos produtos disponíveis no sistema.
{
"_id": "ObjectId('5f7e1ccf9b2a4f1a9c38b9a2')",
"name": "Produto Exemplo",
"description": "Descrição detalhada do produto.",
"price": 99.99,
"category": "Categoria Exemplo",
"stock": 100,
"createdAt": "2024-08-29T10:30:00Z",
"updatedAt": "2024-08-29T11:30:00Z"
}
- _id: Identificador único do usuário gerado automaticamente pelo MongoDB.
- name: Nome completo do usuário.
- email: Endereço de email do usuário.
- passwordHash: Hash da senha do usuário.
- roles: Lista de papéis atribuídos ao usuário (por exemplo, admin, user).
- createdAt: Data e hora de criação do usuário.
- updatedAt: Data e hora da última atualização dos dados do usuário.
Armazena as informações dos produtos disponíveis no sistema.
Estrutura do Documento
{
"_id": "ObjectId('5f7e1ccf9b2a4f1a9c38b9a2')",
"name": "Produto Exemplo",
"description": "Descrição detalhada do produto.",
"price": 99.99,
"category": "Categoria Exemplo",
"stock": 100,
"createdAt": "2024-08-29T10:30:00Z",
"updatedAt": "2024-08-29T11:30:00Z"
}
- _id: Identificador único do produto gerado automaticamente pelo MongoDB.
- name: Nome do produto.
- description: Descrição detalhada do produto.
- price: Preço do produto.
- category: Categoria à qual o produto pertence.
- stock: Quantidade de produtos em estoque.
- createdAt: Data e hora de criação do produto.
- updatedAt: Data e hora da última atualização dos dados do produto.
Armazena as informações dos pedidos feitos pelos usuários.
Estrutura do Documento
{
"_id": "ObjectId('5f7e1ddf9b2a4f1a9c38b9a3')",
"userId": "ObjectId('5f7e1bbf9b2a4f1a9c38b9a1')",
"products": [
{
"productId": "ObjectId('5f7e1ccf9b2a4f1a9c38b9a2')",
"quantity": 2,
"price": 99.99
}
],
"totalPrice": 199.98,
"status": "pending",
"createdAt": "2024-08-29T11:00:00Z",
"updatedAt": "2024-08-29T11:30:00Z"
}
- _id: Identificador único do pedido gerado automaticamente pelo MongoDB.
- userId: Referência ao identificador do usuário que fez o pedido.
- products: Lista de produtos incluídos no pedido, cada um com:
- productId: Identificador do produto.
- quantity: Quantidade do produto pedido.
- price: Preço unitário do produto no momento do pedido.
- totalPrice: Preço total do pedido (soma de todos os itens).
- status: Status atual do pedido (por exemplo, pending, shipped, delivered).
- createdAt: Data e hora de criação do pedido.
- updatedAt: Data e hora da última atualização dos dados do pedido.
Validação de Dados: Implementar validação de esquema e restrições na aplicação para garantir a consistência dos dados.
Monitoramento e Logs: Utilize ferramentas de monitoramento e logging para acompanhar a saúde do banco de dados e diagnosticar problemas.
Escalabilidade: Considere estratégias de sharding e replicação para lidar com crescimento do banco de dados e alta disponibilidade.
Na etapa 2, em máterial de apoio, estão disponíveis vídeos com a configuração do mongo.db e a utilização com Bson no C#
O Modelo ER representa através de um diagrama como as entidades (coisas, objetos) se relacionam entre si na aplicação interativa.
As referências abaixo irão auxiliá-lo na geração do artefato “Modelo ER”.
O Esquema Relacional corresponde à representação dos dados em tabelas juntamente com as restrições de integridade e chave primária.
As referências abaixo irão auxiliá-lo na geração do artefato “Esquema Relacional”.
Entregar um arquivo banco.sql contendo os scripts de criação das tabelas do banco de dados. Este arquivo deverá ser incluído dentro da pasta src\bd.
Descreva aqui qual(is) tecnologias você vai usar para resolver o seu problema, ou seja, implementar a sua solução. Liste todas as tecnologias envolvidas, linguagens a serem utilizadas, serviços web, frameworks, bibliotecas, IDEs de desenvolvimento, e ferramentas.
Apresente também uma figura explicando como as tecnologias estão relacionadas ou como uma interação do usuário com o sistema vai ser conduzida, por onde ela passa até retornar uma resposta ao usuário.
Explique como a hospedagem e o lançamento da plataforma foi feita.
Links Úteis:
Conceituar qualidade de fato é uma tarefa complexa, mas ela pode ser vista como um método gerencial que através de procedimentos disseminados por toda a organização, busca garantir um produto final que satisfaça às expectativas dos stakeholders.
No contexto de desenvolvimento de software, qualidade pode ser entendida como um conjunto de características a serem satisfeitas, de modo que o produto de software atenda às necessidades de seus usuários. Entretanto, tal nível de satisfação nem sempre é alcançado de forma espontânea, devendo ser continuamente construído. Assim, a qualidade do produto depende fortemente do seu respectivo processo de desenvolvimento.
A norma internacional ISO/IEC 25010, que é uma atualização da ISO/IEC 9126, define oito características e 30 subcaracterísticas de qualidade para produtos de software. Com base nessas características e nas respectivas sub-características, identifique as sub-características que sua equipe utilizará como base para nortear o desenvolvimento do projeto de software considerando-se alguns aspectos simples de qualidade. Justifique as subcaracterísticas escolhidas pelo time e elenque as métricas que permitirão a equipe avaliar os objetos de interesse.
Links Úteis: